home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / mfinputs / bigdel / mf
Encoding:
Text File  |  1988-02-26  |  29.4 KB  |  699 lines

  1. % This is BIGDEL.MF in text format, as of Mar 31, 1986.
  2. % This file contains series of large delimiters for math extension fonts.
  3.  
  4. % The sizes are `{\tt\char`\\big}' (|2dh#|), `{\tt\char`\\Big}' (|3dh#|),
  5. % `{\tt\char`\\bigg}' (|4dh#|), and `{\tt\char`\\Bigg}' (|5dh#|),
  6. % followed in most cases by an extensible character that can grow
  7. % arbitrarily large in |dh#| steps,
  8. % where |dh#| is 60\% of the font design size.
  9. % (For example, a 10-point font will have large delimiters in sizes
  10. % 12$\,$pt, 18$\,$pt, 24$\,$pt, 30$\,$pt, 36$\,$pt, 42$\,$pt, etc.)
  11.  
  12. % Character codes \0000--\0105 and \0150--\0177 are generated.
  13.  
  14. charlist oct"000": oct"020": oct"022": oct"040": oct"060";  % left parentheses
  15. charlist oct"001": oct"021": oct"023": oct"041": oct"061";  % right parentheses
  16. charlist oct"002": oct"150": oct"024": oct"042": oct"062";  % left brackets
  17. charlist oct"003": oct"151": oct"025": oct"043": oct"063";  % right brackets
  18. charlist oct"004": oct"152": oct"026": oct"044": oct"064";  % left floors
  19. charlist oct"005": oct"153": oct"027": oct"045": oct"065";  % right floors
  20. charlist oct"006": oct"154": oct"030": oct"046": oct"066";  % left ceilings
  21. charlist oct"007": oct"155": oct"031": oct"047": oct"067";  % right ceilings
  22. charlist oct"010": oct"156": oct"032": oct"050": oct"070";  % left braces
  23. charlist oct"011": oct"157": oct"033": oct"051": oct"071";  % right braces
  24. charlist oct"012": oct"104": oct"034": oct"052";  % left angle brackets
  25. charlist oct"013": oct"105": oct"035": oct"053";  % right angle brackets
  26. charlist oct"016": oct"056": oct"036": oct"054";  % slashes
  27. charlist oct"017": oct"057": oct"037": oct"055";  % backslashes
  28. charlist oct"160": oct"161": oct"162": oct"163": oct"164";  % radical signs
  29.  
  30. extensible oct"014": 0,0,0,oct"014";  % vertical line
  31. extensible oct"015": 0,0,0,oct"015";  % double vertical line
  32. extensible oct"060": oct"060",0,oct"100",oct"102";  % left parenthesis
  33. extensible oct"061": oct"061",0,oct"101",oct"103";  % right parenthesis
  34. extensible oct"062": oct"062",0,oct"064",oct"066";  % left bracket
  35. extensible oct"063": oct"063",0,oct"065",oct"067";  % right bracket
  36. extensible oct"064": 0,0,oct"064",oct"066";  % left floor bracket
  37. extensible oct"065": 0,0,oct"065",oct"067";  % right floor bracket
  38. extensible oct"066": oct"062",0,0,oct"066";  % left ceiling bracket
  39. extensible oct"067": oct"063",0,0,oct"067";  % right ceiling bracket
  40. extensible oct"070": oct"070",oct"074",oct"072",oct"076";  % left brace
  41. extensible oct"071": oct"071",oct"075",oct"073",oct"076";  % right brace
  42. extensible oct"072": oct"070",0,oct"072",oct"076";  % sharp left parenthesis
  43. extensible oct"073": oct"071",0,oct"073",oct"076";  % sharp right parenthesis
  44. extensible oct"074": 0,0,0,oct"077";  % arrow extension modules only
  45. extensible oct"075": 0,0,0,oct"167";  % double arrow extension modules only
  46. extensible oct"076": 0,0,0,oct"076";  % brace extension modules only
  47. extensible oct"077": oct"170",0,oct"171",oct"077";  % updownarrow
  48. extensible oct"100": oct"070",0,oct"073",oct"076";  % left moustache
  49. extensible oct"101": oct"071",0,oct"072",oct"076";  % right moustache
  50. extensible oct"102": 0,0,0,oct"102";  % left parenthesis extension modules only
  51. extensible oct"103": 0,0,0,oct"103";  % right parenthesis extension modules only
  52. extensible oct"164": oct"166",0,oct"164",oct"165";  % radical sign
  53. extensible oct"167": oct"176",0,oct"177",oct"167";  % double updownarrow
  54. extensible oct"170": oct"170",0,0,oct"077";  % uparrow
  55. extensible oct"171": 0,0,oct"171",oct"077";  % downarrow
  56. extensible oct"176": oct"176",0,0,oct"167";  % double uparrow
  57. extensible oct"177": 0,0,oct"177",oct"167";  % double downarrow
  58.  
  59. cmchar "\big left parenthesis";
  60. beginchar(oct"000",7u#,rule_thickness#,2dh#-rule_thickness#);
  61. adjust_fit(1.5u#,-.25u#); left_paren(hair,stem); endchar;
  62.  
  63. cmchar "\Big left parenthesis";
  64. beginchar(oct"020",9u#,rule_thickness#,3dh#-rule_thickness#);
  65. adjust_fit(2u#,-.25u#); left_paren(rule_thickness,.5[stem,bold]); endchar;
  66.  
  67. cmchar "\bigg left parenthesis";
  68. beginchar(oct"022",11u#,rule_thickness#,4dh#-rule_thickness#);
  69. adjust_fit(2.5u#,-.25u#); left_paren(rule_thickness+.2dw,bold); endchar;
  70.  
  71. cmchar "\Bigg left parenthesis";
  72. beginchar(oct"040",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  73. adjust_fit(3u#,-.25u#); left_paren(rule_thickness+.4dw,bold+dw); endchar;
  74.  
  75. cmchar "Extensible left parenthesis---top";
  76. beginchar(oct"060",12u#,rule_thickness#,3dh#-rule_thickness#);
  77. adjust_fit(4u#,-.25u#); pickup fine.nib;
  78. numeric min_breadth,max_breadth;
  79. min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
  80. pos1(hround min_breadth,0); pos2(hround max_breadth,0);
  81. rt x1r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
  82. top y1=h-1; y2=-d-eps;
  83. filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e;  % upper arc
  84. penlabels(1,2); endchar;
  85.  
  86. cmchar "Extensible left parenthesis---bottom";
  87. beginchar(oct"100",12u#,rule_thickness#,3dh#-rule_thickness#);
  88. adjust_fit(4u#,-.25u#); pickup fine.nib;
  89. numeric min_breadth,max_breadth;
  90. min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
  91. pos3(hround min_breadth,0); pos2(hround max_breadth,0);
  92. rt x3r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
  93. bot y3=1-d; y2=h+eps;
  94. filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e;  % lower arc
  95. penlabels(2,3); endchar;
  96.  
  97. cmchar "Extensible left parenthesis---extension module";
  98. beginchar(oct"102",12u#,0,dh#);
  99. adjust_fit(4u#,-.25u#); pickup fine.nib;
  100. numeric max_breadth; max_breadth=bold+2dw;
  101. pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
  102. lft x2l=lft x2'l=hround 1.25u; y2=h+eps; y2'=-d-eps;
  103. filldraw stroke z2e--z2'e;  % link
  104. penlabels(2,2'); endchar;
  105.  
  106. cmchar "\big right parenthesis";
  107. beginchar(oct"001",7u#,rule_thickness#,2dh#-rule_thickness#);
  108. adjust_fit(-.25u#,1.5u#); right_paren(hair,stem); endchar;
  109.  
  110. cmchar "\Big right parenthesis";
  111. beginchar(oct"021",9u#,rule_thickness#,3dh#-rule_thickness#);
  112. adjust_fit(-.25u#,2u#); right_paren(rule_thickness,.5[stem,bold]); endchar;
  113.  
  114. cmchar "\bigg right parenthesis";
  115. beginchar(oct"023",11u#,rule_thickness#,4dh#-rule_thickness#);
  116. adjust_fit(-.25u#,2.5u#); right_paren(rule_thickness+.2dw,bold); endchar;
  117.  
  118. cmchar "\Bigg right parenthesis";
  119. beginchar(oct"041",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  120. adjust_fit(-.25u#,3u#); right_paren(rule_thickness+.4dw,bold+dw); endchar;
  121.  
  122. cmchar "Extensible right parenthesis---top";
  123. beginchar(oct"061",12u#,rule_thickness#,3dh#-rule_thickness#);
  124. adjust_fit(-.25u#,4u#); pickup fine.nib;
  125. numeric min_breadth,max_breadth;
  126. min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
  127. pos1(hround min_breadth,0); pos2(hround max_breadth,0);
  128. lft x1l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
  129. top y1=h-1; y2=-d-eps;
  130. filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e;  % upper arc
  131. penlabels(1,2); endchar;
  132.  
  133. cmchar "Extensible right parenthesis---bottom";
  134. beginchar(oct"101",12u#,rule_thickness#,3dh#-rule_thickness#);
  135. adjust_fit(-.25u#,4u#); pickup fine.nib;
  136. numeric min_breadth,max_breadth;
  137. min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
  138. pos3(hround min_breadth,0); pos2(hround max_breadth,0);
  139. lft x3l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
  140. bot y3=1-d; y2=h+eps;
  141. filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e;  % lower arc
  142. penlabels(2,3); endchar;
  143.  
  144. cmchar "Extensible right parenthesis---extension module";
  145. beginchar(oct"103",12u#,0,dh#);
  146. adjust_fit(-.25u#,4u#); pickup fine.nib;
  147. numeric max_breadth; max_breadth=bold+2dw;
  148. pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
  149. rt x2r=rt x2'r=hround(w-1.25u); y2=h+eps; y2'=-d-eps;
  150. filldraw stroke z2e--z2'e;  % link
  151. penlabels(2,2'); endchar;
  152.  
  153. cmchar "\big left bracket";
  154. beginchar(oct"002",6u#,rule_thickness#,2dh#-rule_thickness#);
  155. adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,true); endchar;
  156.  
  157. cmchar "\Big left bracket";
  158. beginchar(oct"150",6.5u#,rule_thickness#,3dh#-rule_thickness#);
  159. adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,true); endchar;
  160.  
  161. cmchar "\bigg left bracket";
  162. beginchar(oct"024",7u#,rule_thickness#,4dh#-rule_thickness#);
  163. adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,true); endchar;
  164.  
  165. cmchar "\Bigg left bracket";
  166. beginchar(oct"042",7.5u#,rule_thickness#,5dh#-rule_thickness#);
  167. adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,true); endchar;
  168.  
  169. cmchar "Extensible left bracket---top";
  170. beginchar(oct"062",8u#,rule_thickness#,3dh#-rule_thickness#);
  171. adjust_fit(4u#,0); pickup crisp.nib;
  172. pos1(stem,0); pos2(stem,0);
  173. top y1=h-1; y2=-d-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
  174. filldraw stroke z1e--z2e;  % stem
  175. pos3(stem,90); pos4(stem,90);
  176. x3=x1l; rt x4=hround(w-.75u+.5stem); y3r=y4r=y1;
  177. filldraw stroke z3e--z4e;  % upper bar
  178. penlabels(1,2,3,4); endchar;
  179.  
  180. cmchar "Extensible left bracket---bottom";
  181. beginchar(oct"064",8u#,rule_thickness#,3dh#-rule_thickness#);
  182. adjust_fit(4u#,0); pickup crisp.nib;
  183. pos1(stem,0); pos2(stem,0);
  184. y1=h+eps; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5stem);
  185. filldraw stroke z1e--z2e;  % stem
  186. pos5(stem,90); pos6(stem,90);
  187. x5=x1l; rt x6=hround(w-.75u+.5stem); y5l=y6l=y2;
  188. filldraw stroke z5e--z6e;  % lower bar
  189. penlabels(1,2,5,6); endchar;
  190.  
  191. cmchar "Extensible left bracket---extension module";
  192. beginchar(oct"066",8u#,0,dh#);
  193. adjust_fit(4u#,0); pickup crisp.nib;
  194. pos1(stem,0); pos2(stem,0);
  195. y1=h+1+eps; bot y2=-d-1-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
  196. filldraw stroke z1e--z2e;  % stem
  197. penlabels(1,2); endchar;
  198.  
  199. cmchar "\big right bracket";
  200. beginchar(oct"003",6u#,rule_thickness#,2dh#-rule_thickness#);
  201. adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,true); endchar;
  202.  
  203. cmchar "\Big right bracket";
  204. beginchar(oct"151",6.5u#,rule_thickness#,3dh#-rule_thickness#);
  205. adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,true); endchar;
  206.  
  207. cmchar "\bigg right bracket";
  208. beginchar(oct"025",7u#,rule_thickness#,4dh#-rule_thickness#);
  209. adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,true); endchar;
  210.  
  211. cmchar "\Bigg right bracket";
  212. beginchar(oct"043",7.5u#,rule_thickness#,5dh#-rule_thickness#);
  213. adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,true); endchar;
  214.  
  215. cmchar "Extensible right bracket---top";
  216. beginchar(oct"063",8u#,rule_thickness#,3dh#-rule_thickness#);
  217. adjust_fit(0,4u#); pickup crisp.nib;
  218. pos1(stem,0); pos2(stem,0);
  219. top y1=h-1; y2=-d-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
  220. filldraw stroke z1e--z2e;  % stem
  221. pos3(stem,90); pos4(stem,90);
  222. x3=x1r; lft x4=hround(.75u-.5stem); y3r=y4r=y1;
  223. filldraw stroke z3e--z4e;  % upper bar
  224. penlabels(1,2,3,4); endchar;
  225.  
  226. cmchar "Extensible right bracket---bottom";
  227. beginchar(oct"065",8u#,rule_thickness#,3dh#-rule_thickness#);
  228. adjust_fit(0,4u#); pickup crisp.nib;
  229. pos1(stem,0); pos2(stem,0);
  230. y1=h+eps; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5stem);
  231. filldraw stroke z1e--z2e;  % stem
  232. pos5(stem,90); pos6(stem,90);
  233. x5=x1r; lft x6=hround(.75u-.5stem); y5l=y6l=y2;
  234. filldraw stroke z5e--z6e;  % lower bar
  235. penlabels(1,2,5,6); endchar;
  236.  
  237. cmchar "Extensible right bracket---extension module";
  238. beginchar(oct"067",8u#,0,dh#);
  239. adjust_fit(0,4u#); pickup crisp.nib;
  240. pos1(stem,0); pos2(stem,0);
  241. y1=h+1+eps; bot y2=-d-1-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
  242. filldraw stroke z1e--z2e;  % stem
  243. penlabels(1,2); endchar;
  244.  
  245. cmchar "\big left floor bracket";
  246. beginchar(oct"004",7u#,rule_thickness#,2dh#-rule_thickness#);
  247. adjust_fit(1.5u#,0); left_bracket(rule_thickness,false,true); endchar;
  248.  
  249. cmchar "\Big left floor bracket";
  250. beginchar(oct"152",7.5u#,rule_thickness#,3dh#-rule_thickness#);
  251. adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],false,true); endchar;
  252.  
  253. cmchar "\bigg left floor bracket";
  254. beginchar(oct"026",8u#,rule_thickness#,4dh#-rule_thickness#);
  255. adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],false,true); endchar;
  256.  
  257. cmchar "\Bigg left floor bracket";
  258. beginchar(oct"044",8.5u#,rule_thickness#,5dh#-rule_thickness#);
  259. adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],false,true); endchar;
  260.  
  261. cmchar "\big right floor bracket";
  262. beginchar(oct"005",7u#,rule_thickness#,2dh#-rule_thickness#);
  263. adjust_fit(0,1.5u#); right_bracket(rule_thickness,false,true); endchar;
  264.  
  265. cmchar "\Big right floor bracket";
  266. beginchar(oct"153",7.5u#,rule_thickness#,3dh#-rule_thickness#);
  267. adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],false,true); endchar;
  268.  
  269. cmchar "\bigg right floor bracket";
  270. beginchar(oct"027",8u#,rule_thickness#,4dh#-rule_thickness#);
  271. adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],false,true); endchar;
  272.  
  273. cmchar "\Bigg right floor bracket";
  274. beginchar(oct"045",8.5u#,rule_thickness#,5dh#-rule_thickness#);
  275. adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],false,true); endchar;
  276.  
  277. cmchar "\big left ceiling bracket";
  278. beginchar(oct"006",7u#,rule_thickness#,2dh#-rule_thickness#);
  279. adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,false); endchar;
  280.  
  281. cmchar "\Big left ceiling bracket";
  282. beginchar(oct"154",7.5u#,rule_thickness#,3dh#-rule_thickness#);
  283. adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,false); endchar;
  284.  
  285. cmchar "\bigg left ceiling bracket";
  286. beginchar(oct"030",8u#,rule_thickness#,4dh#-rule_thickness#);
  287. adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,false); endchar;
  288.  
  289. cmchar "\Bigg left ceiling bracket";
  290. beginchar(oct"046",8.5u#,rule_thickness#,5dh#-rule_thickness#);
  291. adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,false); endchar;
  292.  
  293. cmchar "\big right ceiling bracket";
  294. beginchar(oct"007",7u#,rule_thickness#,2dh#-rule_thickness#);
  295. adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,false); endchar;
  296.  
  297. cmchar "\Big right ceiling bracket";
  298. beginchar(oct"155",7.5u#,rule_thickness#,3dh#-rule_thickness#);
  299. adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,false); endchar;
  300.  
  301. cmchar "\bigg right ceiling bracket";
  302. beginchar(oct"031",8u#,rule_thickness#,4dh#-rule_thickness#);
  303. adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,false); endchar;
  304.  
  305. cmchar "\Bigg right ceiling bracket";
  306. beginchar(oct"047",8.5u#,rule_thickness#,5dh#-rule_thickness#);
  307. adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,false); endchar;
  308.  
  309. cmchar "\big left curly brace";
  310. beginchar(oct"010",9u#,rule_thickness#,2dh#-rule_thickness#);
  311. adjust_fit(.75u#,.75u#); left_curly(hair,stem); endchar;
  312.  
  313. cmchar "\Big left curly brace";
  314. beginchar(oct"156",10u#,rule_thickness#,3dh#-rule_thickness#);
  315. adjust_fit(u#,u#); left_curly(rule_thickness,.5[stem,bold]); endchar;
  316.  
  317. cmchar "\bigg left curly brace";
  318. beginchar(oct"032",11u#,rule_thickness#,4dh#-rule_thickness#);
  319. adjust_fit(1.25u#,1.25u#); left_curly(rule_thickness+.2dw,bold); endchar;
  320.  
  321. cmchar "\Bigg left curly brace";
  322. beginchar(oct"050",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  323. adjust_fit(1.5u#,1.5u#); left_curly(rule_thickness+.4dw,bold+dw); endchar;
  324.  
  325. cmchar "Extensible left curly brace---top";
  326. beginchar(oct"070",12u#,0,1.5dh#);
  327. adjust_fit(2u#,2u#); pickup fine.nib;
  328. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  329. pos1(min_breadth,0); pos1'(min_breadth,0);
  330. pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
  331. rt x1r=rt x1'r=hround(w-1.5u+.5min_breadth);
  332. lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
  333. top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
  334. filldraw z1l{3(x2l-x1l),y2-y1}...z2l---z3l
  335.  --z3r---z2r...{3(x1r-x2r),y1'-y2}z1'r--z1r--cycle;  % stroke
  336. penlabels(1,2,3); endchar;
  337.  
  338. cmchar "Extensible left curly brace---bottom";
  339. beginchar(oct"072",12u#,0,1.5dh#);
  340. adjust_fit(2u#,2u#); pickup fine.nib;
  341. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  342. pos7(min_breadth,0); pos7'(min_breadth,0);
  343. pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
  344. rt x7r=rt x7'r=hround(w-1.5u+.5min_breadth);
  345. lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
  346. y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
  347. filldraw z5l---z6l...{3(x7l-x6l),y7-y6}z7l
  348.  --z7r--z7'r{3(x6r-x7r),y6-y7'}...z6r---z5r--cycle;  % stroke
  349. penlabels(5,6,7); endchar;
  350.  
  351. cmchar "Extensible left curly brace---middle";
  352. beginchar(oct"074",12u#,0,3dh#);
  353. adjust_fit(2u#,2u#); pickup fine.nib;
  354. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  355. pos4(min_breadth,0); pos4'(min_breadth,0);
  356. forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
  357. lft x4l=lft x4'l=hround(1.5u-.5min_breadth);
  358. x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
  359. y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
  360. y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
  361. filldraw z2l---z3l...{3(x4l-x3l),y4-y3}z4l
  362.  --z4'l{3(x5l-x4l),y5-y4'}...z5l---z6l--z6r---z5r
  363.  ...{3(x4r-x5r),.5[y4,y4']-y5}.5[z4r,z4'r]{3(x3r-x4r),y3-.5[y4,y4']}
  364.  ...z3r---z2r--cycle;  % stroke
  365. penlabels(2,3,4,5,6); endchar;
  366.  
  367. cmchar "Extensible curly brace---extension module";
  368. beginchar(oct"076",12u#,0,.5dh#);
  369. adjust_fit(2u#,2u#); pickup fine.nib;
  370. pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
  371. lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y3=-d-eps;
  372. filldraw stroke z2e--z3e;  % stem
  373. penlabels(2,3); endchar;
  374.  
  375. cmchar "\big right curly brace";
  376. beginchar(oct"011",9u#,rule_thickness#,2dh#-rule_thickness#);
  377. adjust_fit(.75u#,.75u#); right_curly(hair,stem); endchar;
  378.  
  379. cmchar "\Big right curly brace";
  380. beginchar(oct"157",10u#,rule_thickness#,3dh#-rule_thickness#);
  381. adjust_fit(u#,u#); right_curly(rule_thickness,.5[stem,bold]); endchar;
  382.  
  383. cmchar "\bigg right curly brace";
  384. beginchar(oct"033",11u#,rule_thickness#,4dh#-rule_thickness#);
  385. adjust_fit(1.25u#,1.25u#); right_curly(rule_thickness+.2dw,bold); endchar;
  386.  
  387. cmchar "\Bigg right curly brace";
  388. beginchar(oct"051",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  389. adjust_fit(1.5u#,1.5u#); right_curly(rule_thickness+.4dw,bold+dw); endchar;
  390.  
  391. cmchar "Extensible right curly brace---top";
  392. beginchar(oct"071",12u#,0,1.5dh#);
  393. adjust_fit(2u#,2u#); pickup fine.nib;
  394. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  395. pos1(min_breadth,0); pos1'(min_breadth,0);
  396. pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
  397. lft x1l=lft x1'l=hround(1.5u-.5min_breadth);
  398. lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
  399. top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
  400. filldraw z1r{3(x2r-x1r),y2-y1}...z2r---z3r
  401.  --z3l---z2l...{3(x1l-x2l),y1'-y2}z1'l--z1l--cycle;  % stroke
  402. penlabels(1,2,3); endchar;
  403.  
  404. cmchar "Extensible right curly brace---bottom";
  405. beginchar(oct"073",12u#,0,1.5dh#);
  406. adjust_fit(2u#,2u#); pickup fine.nib;
  407. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  408. pos7(min_breadth,0); pos7'(min_breadth,0);
  409. pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
  410. lft x7l=lft x7'l=hround(1.5u-.5min_breadth);
  411. lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
  412. y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
  413. filldraw z5r---z6r...{3(x7r-x6r),y7-y6}z7r
  414.  --z7l--z7'l{3(x6l-x7l),y6-y7'}...z6l---z5l--cycle;  % stroke
  415. penlabels(5,6,7); endchar;
  416.  
  417. cmchar "Extensible right curly brace---middle";
  418. beginchar(oct"075",12u#,0,3dh#);
  419. adjust_fit(2u#,2u#); pickup fine.nib;
  420. numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
  421. pos4(min_breadth,0); pos4'(min_breadth,0);
  422. forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
  423. rt x4r=rt x4'r=hround(w-1.5u+.5min_breadth);
  424. x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
  425. y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
  426. y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
  427. filldraw z2r---z3r...{3(x4r-x3r),y4-y3}z4r
  428.  --z4'r{3(x5r-x4r),y5-y4'}...z5r---z6r--z6l---z5l
  429.  ...{3(x4l-x5l),.5[y4,y4']-y5}.5[z4l,z4'l]{3(x3l-x4l),y3-.5[y4,y4']}
  430.  ...z3l---z2l--cycle;  % stroke
  431. penlabels(2,3,4,5,6); endchar;
  432.  
  433. cmchar "Horizontal curly brace tip---down and left";
  434. beginchar(oct"172",.75dh#,3rule_thickness#,0);
  435. adjust_fit(0,0); pickup fine.nib;
  436. numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
  437. pos1(min_breadth,90); pos1'(min_breadth,90);
  438. pos2(heavy_rule_thickness,90);
  439. bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
  440. .5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
  441. filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r
  442.  --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle;  % stroke
  443. penlabels(1,2); endchar;
  444.  
  445. cmchar "Horizontal curly brace tip---down and right";
  446. beginchar(oct"173",.75dh#,3rule_thickness#,0);
  447. adjust_fit(0,0); pickup fine.nib;
  448. numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
  449. pos1(min_breadth,90); pos1'(min_breadth,90);
  450. pos2(heavy_rule_thickness,90);
  451. bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
  452. .5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
  453. filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r
  454.  --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle;  % stroke
  455. penlabels(1,2); endchar;
  456.  
  457. cmchar "Horizontal curly brace tip---up and left";
  458. beginchar(oct"174",.75dh#,3rule_thickness#,0);
  459. adjust_fit(0,0); pickup fine.nib;
  460. numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
  461. pos1(min_breadth,90); pos1'(min_breadth,90);
  462. pos2(heavy_rule_thickness,90);
  463. bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
  464. .5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
  465. filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l
  466.  --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle;  % stroke
  467. penlabels(1,2); endchar;
  468.  
  469. cmchar "Horizontal curly brace tip---up and right";
  470. beginchar(oct"175",.75dh#,3rule_thickness#,0);
  471. adjust_fit(0,0); pickup fine.nib;
  472. numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
  473. pos1(min_breadth,90); pos1'(min_breadth,90);
  474. pos2(heavy_rule_thickness,90);
  475. bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
  476. .5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
  477. filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l
  478.  --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle;  % stroke
  479. penlabels(1,2); endchar;
  480.  
  481. cmchar "\big left angle bracket";
  482. beginchar(oct"012",7u#,rule_thickness#,2dh#-rule_thickness#);
  483. adjust_fit(.75u#,.75u#); left_angle(rule_thickness); endchar;
  484.  
  485. cmchar "\Big left angle bracket";
  486. beginchar(oct"104",9u#,rule_thickness#,3dh#-rule_thickness#);
  487. adjust_fit(u#,u#); left_angle(.25[rule_thickness,stem]); endchar;
  488.  
  489. cmchar "\bigg left angle bracket";
  490. beginchar(oct"034",11u#,rule_thickness#,4dh#-rule_thickness#);
  491. adjust_fit(1.25u#,1.25u#); left_angle(.5[rule_thickness,stem]); endchar;
  492.  
  493. cmchar "\Bigg left angle bracket";
  494. beginchar(oct"052",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  495. adjust_fit(1.5u#,1.5u#); left_angle(.75[rule_thickness,stem]); endchar;
  496.  
  497. cmchar "\big right angle bracket";
  498. beginchar(oct"013",7u#,rule_thickness#,2dh#-rule_thickness#);
  499. adjust_fit(.75u#,.75u#); right_angle(rule_thickness); endchar;
  500.  
  501. cmchar "\Big right angle bracket";
  502. beginchar(oct"105",9u#,rule_thickness#,3dh#-rule_thickness#);
  503. adjust_fit(u#,u#); right_angle(.25[rule_thickness,stem]); endchar;
  504.  
  505. cmchar "\bigg right angle bracket";
  506. beginchar(oct"035",11u#,rule_thickness#,4dh#-rule_thickness#);
  507. adjust_fit(1.25u#,1.25u#); right_angle(.5[rule_thickness,stem]); endchar;
  508.  
  509. cmchar "\Bigg right angle bracket";
  510. beginchar(oct"053",11.5u#,rule_thickness#,5dh#-rule_thickness#);
  511. adjust_fit(1.5u#,1.5u#); right_angle(.75[rule_thickness,stem]); endchar;
  512.  
  513. cmchar "\big slash";
  514. beginchar(oct"016",10.4u#,rule_thickness#,2dh#-rule_thickness#);
  515. big_slash(rule_thickness+.2dw); endchar;
  516.  
  517. cmchar "\Big slash";
  518. beginchar(oct"056",14.6u#,rule_thickness#,3dh#-rule_thickness#);
  519. big_slash(rule_thickness+.6dw); endchar;
  520.  
  521. cmchar "\bigg slash";
  522. beginchar(oct"036",18.8u#,rule_thickness#,4dh#-rule_thickness#);
  523. big_slash(rule_thickness+dw); endchar;
  524.  
  525. cmchar "\Bigg slash";
  526. beginchar(oct"054",23u#,rule_thickness#,5dh#-rule_thickness#);
  527. big_slash(rule_thickness+1.5dw); endchar;
  528.  
  529. cmchar "\big backslash";
  530. beginchar(oct"017",10.4u#,rule_thickness#,2dh#-rule_thickness#);
  531. big_blash(rule_thickness+.2dw); endchar;
  532.  
  533. cmchar "\Big backslash";
  534. beginchar(oct"057",14.6u#,rule_thickness#,3dh#-rule_thickness#);
  535. big_blash(rule_thickness+.6dw); endchar;
  536.  
  537. cmchar "\bigg backslash";
  538. beginchar(oct"037",18.8u#,rule_thickness#,4dh#-rule_thickness#);
  539. big_blash(rule_thickness+dw); endchar;
  540.  
  541. cmchar "\Bigg backslash";
  542. beginchar(oct"055",23u#,rule_thickness#,5dh#-rule_thickness#);
  543. big_blash(rule_thickness+1.5dw); endchar;
  544.  
  545. cmchar "Extensible vertical line---extension module";
  546. beginchar(oct"014",6u#,0,dh#);
  547. adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
  548. x1=x2=good.x .5w; y1=eps; y2=-d-eps;
  549. draw z1--z2;  % stem
  550. labels(1,2); endchar;
  551.  
  552. cmchar "Extensible double vertical line---extension module";
  553. beginchar(oct"015",10u#,0,dh#);
  554. adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
  555. x1=x2=good.x .3w; x3=x4=w-x1; y1=y3=eps; y2=y4=-d-eps;
  556. draw z1--z2; draw z3--z4;  % stems
  557. labels(1,2,3,4); endchar;
  558.  
  559. cmchar "Extensible vertical arrow--top";
  560. beginchar(oct"170",12u#,0,dh#);
  561. adjust_fit(0,0); pickup crisp.nib;
  562. numeric thickness,barr;
  563. thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
  564. pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
  565. lft x1l=hround(.5w-.5thickness); y1=-d-eps;
  566. x0=x1=x2; top y0=h; x0-x3=x4-x0=4u+eps;
  567. y3=y4=y0-.29asc_height-eps;
  568. pos5(barr,angle(z4-z0)); z5l=z0;
  569. pos6(barr,angle(z3-z0)); z6l=z0;
  570. z9=.381966[.5[z3,z4],z0];
  571. numeric t; path p; p=z4l{z9-z4}..z6r;
  572. t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
  573. filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
  574.  --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
  575.  --z3r{z9-z3}..z0 & cycle;  % arrowhead and stem
  576. penlabels(0,1,2,3,4,5,6,9); endchar;
  577.  
  578. cmchar "Extensible vertical arrow--bottom";
  579. beginchar(oct"171",12u#,0,dh#);
  580. adjust_fit(0,0); pickup crisp.nib;
  581. numeric thickness,barr;
  582. thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
  583. pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
  584. lft x1l=hround(.5w-.5thickness); y1=h+eps;
  585. x0=x1=x2; bot y0=-d; x0-x3=x4-x0=4u+eps;
  586. y3=y4=y0+.29asc_height+eps;
  587. pos5(barr,angle(z4-z0)); z5l=z0;
  588. pos6(barr,angle(z3-z0)); z6l=z0;
  589. z9=.381966[.5[z3,z4],z0];
  590. numeric t; path p; p=z4r{z9-z4}..z6r;
  591. t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
  592. filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
  593.  --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
  594.  --z3l{z9-z3}..z0 & cycle;  % arrowhead and stem
  595. penlabels(0,1,2,3,4,5,6,9); endchar;
  596.  
  597. "Extensible vertical arrow--extension module";
  598. beginchar(oct"077",12u#,0,dh#);
  599. adjust_fit(0,0); pickup crisp.nib;
  600. numeric thickness; thickness=hround(rule_thickness+.2dw);
  601. pos1(thickness,0); pos2(thickness,0);
  602. lft x1l=hround(.5w-.5thickness); x2=x1; y1=h+1+eps; y2=-d-1-eps;
  603. filldraw stroke z1e--z2e;  % stem
  604. penlabels(1,2); endchar;
  605.  
  606. cmchar "Extensible double vertical arrow--top";
  607. beginchar(oct"176",14u#,0,dh#);
  608. adjust_fit(0,0); pickup crisp.nib;
  609. numeric thickness; thickness=Vround(rule_thickness+.2dw);
  610. pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
  611. y1=y2=-d-eps; y7=y8=h; top y0=h+eps; x1=x7; x2=x8;
  612. rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
  613. filldraw stroke z1e--z7e; filldraw stroke z2e--z8e;  % bars
  614. pos3(thickness,90); pos4(thickness,90);
  615. x2-x3=x4-x1=4u+eps; y3=y4=y0-.48asc_height-eps;
  616. pos5(thickness,angle(z4-z0)); z5l=z0;
  617. pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
  618. erase filldraw z0..{z3-z9}z3--(x3,h)
  619.  --(x4,h)--z4{z9-z4}..z0 & cycle;  % erase excess
  620. numeric t; path p; p=z4l{z9-z4}..z6r;
  621. t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
  622. filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
  623.  --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;  % arrowhead
  624. penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  625.  
  626. cmchar "Extensible double vertical arrow--bottom";
  627. beginchar(oct"177",14u#,0,dh#);
  628. adjust_fit(0,0); pickup crisp.nib;
  629. numeric thickness; thickness=Vround(rule_thickness+.2dw);
  630. pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
  631. y1=y2=h+eps; y7=y8=-d; bot y0=-d-eps; x1=x7; x2=x8;
  632. rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
  633. filldraw stroke z1e--z7e; filldraw stroke z2e--z8e;  % bars
  634. pos3(thickness,90); pos4(thickness,90);
  635. x2-x3=x4-x1=4u+eps; y3=y4=y0+.48asc_height-eps;
  636. pos5(thickness,angle(z4-z0)); z5l=z0;
  637. pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
  638. erase filldraw z0..{z3-z9}z3--(x3,-d)
  639.  --(x4,-d)--z4{z9-z4}..z0 & cycle;  % erase excess
  640. numeric t; path p; p=z4r{z9-z4}..z6r;
  641. t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
  642. filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
  643.  --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle;  % arrowhead
  644. penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  645.  
  646. "Extensible double vertical arrow--extension module";
  647. beginchar(oct"167",14u#,0,dh#);
  648. adjust_fit(0,0); pickup crisp.nib;
  649. numeric thickness; thickness=Vround(rule_thickness+.2dw);
  650. pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
  651. y1=y2=h+1+eps; y7=y8=-d-1-eps; x1=x7; x2=x8;
  652. rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=good.x .5w;
  653. filldraw stroke z1e--z7e; filldraw stroke z2e--z8e;  % bars
  654. penlabels(1,2,7,8); endchar;
  655.  
  656. cmchar "\big radical sign";
  657. beginchar(oct"160",18u#,rule_thickness#,2dh#-rule_thickness#);
  658. big_sqrt; endchar;
  659.  
  660. cmchar "\Big radical sign";
  661. beginchar(oct"161",18u#,rule_thickness#,3dh#-rule_thickness#);
  662. big_sqrt; endchar;
  663.  
  664. cmchar "\bigg radical sign";
  665. beginchar(oct"162",18u#,rule_thickness#,4dh#-rule_thickness#);
  666. big_sqrt; endchar;
  667.  
  668. cmchar "\Bigg radical sign";
  669. beginchar(oct"163",18u#,rule_thickness#,5dh#-rule_thickness#);
  670. big_sqrt; endchar;
  671.  
  672. cmchar "Extensible radical sign---bottom";
  673. beginchar(oct"164",19u#,0,3dh#);
  674. adjust_fit(0,-letter_fit#); pickup rule.nib;
  675. x1=x2=good.x(w-6u); bot y1=1-d; y2=h+eps;
  676. draw z1--z2;  % diagonal
  677. pickup crisp.nib; pos3(max(curve,rule_thickness),0);
  678. x3l=good.x 3u; y3=.9[y1,y2];
  679. pos4(rule_thickness,0); x4=x1; bot y4=-d;
  680. pos5(vair,-45); x5l=good.x(x3l-u); z5l=whatever[z3r,(x2,body_height)];
  681. z6=z5r+whatever*((x2,body_height)-z3r)=whatever[z3l,z4l];
  682. z7=whatever[z1,z2]=z3r+whatever*(z4l-z3l);
  683. filldraw z5r--z6--z4l--z4--z7--z3r--z5l--cycle;  % left diagonal and serif
  684. penlabels(1,2,3,4,5,6,7); endchar;
  685.  
  686. cmchar "Extensible radical sign---extension module";
  687. beginchar(oct"165",19u#,0,dh#);
  688. adjust_fit(0,-letter_fit#); pickup rule.nib;
  689. x1=x2=good.x(w-6u); y1=-d-eps; y2=h+eps;
  690. draw z1--z2;  % stem
  691. labels(1,2); endchar;
  692.  
  693. cmchar "Extensible radical sign---top";
  694. beginchar(oct"166",19u#,rule_thickness#,dh#-rule_thickness#);
  695. adjust_fit(0,-letter_fit#); pickup rule.nib;
  696. x1=x2=good.x(w-6u); x3=good.x(w+.5); y1=-d-eps; bot y2=bot y3=0;
  697. draw z1--z2--z3;  % stem and link
  698. labels(1,2,3); endchar;
  699.